/*
 * Equipe: Menandro Dias E. Neto
 *         Thiago Torres
 *         Ubirajara Gabriela
 */

package com.mapdelivery.model;

import com.mapdelivery.beans.MapDeliveryBean;
import com.mapdelivery.beans.Empresa;
import com.mapdelivery.model.dao.DAOEmpresa;
import java.util.ArrayList;
import java.util.Iterator;

/**
 *
 * @author menandro.neto
 */
public class ModelEmpresa implements ModelProxy {

    private ArrayList<MapDeliveryBean> empresas;
    private DAOEmpresa daoEmpresa;

    public ModelEmpresa() {
        this.daoEmpresa = new DAOEmpresa();
        this.empresas = new ArrayList<MapDeliveryBean>();
    }

    public Integer count(){
        return this.empresas.size();
    }

    public void virtualDataProducer(){
        this.makeTestData();
    }

    /**
     *
     * @return Sucess when deleted
     */
    public Boolean delete(Integer pos) {
        Empresa bean = (Empresa) this.empresas.get(pos);
        this.daoEmpresa.delete( bean.getEmpresaId() );
        return this.empresas.remove(pos);
    }

    /**
     *
     * @return Sucess when inserted
     */
    public Boolean insert(MapDeliveryBean item) {
        this.daoEmpresa.insert(item);
        return this.empresas.add( (Empresa) item);
    }

    /**
     *
     * @return Sucess when updated
     */
    public Boolean update(Integer pos, MapDeliveryBean item) {
        Boolean ret;
        ret = ( pos.intValue() < 0 || pos.intValue() >= this.empresas.size() );
        if (ret)
                this.empresas.set(pos.intValue(), (Empresa) item);

        Empresa bean = (Empresa) this.empresas.get(pos);
        this.daoEmpresa.update(bean.getEmpresaId(), item);

        return ret;
    }

    /**
     *
     * @return ArrayList<MapDeliveryBean>
     */
    public ArrayList<MapDeliveryBean> list() {
        this.empresas.removeAll(empresas);
        this.empresas = this.daoEmpresa.findAll();
        return( this.empresas );
    }

    private void makeTestData(){
        this.empresas = this.daoEmpresa.findAll();
        /*
        int i, j = 1;
        Empresa test;
        for (i = this.count(); i < 2; i++) {
            test = new Empresa();
            j += i;

            test.setEmpresaId(i + 1);
            test.setPessoaId(j);
            test.setPesNome( "Empresa Razão Social ".concat( String.valueOf(j) ) );
            test.setPesApelido( "Empresa Nome Fantasia ".concat( String.valueOf(j) ) );
            test.setPesCidade("Salvador");
            
            this.insert(test);
        }
        */
    }
}
